/**
 * 环境变量配置管理
 * 统一管理所有环境变量，提供类型安全的访问方式
 */

// 应用配置
export const appConfig = {
  // 应用信息
  title: import.meta.env.VITE_APP_TITLE || '三角洲数据查询攻略站',
  version: import.meta.env.VITE_APP_VERSION || '1.0.0',
  description: import.meta.env.VITE_APP_DESCRIPTION || '专业的游戏物品数据分析平台',
  
  // 环境信息
  isDev: import.meta.env.DEV,
  isProd: import.meta.env.PROD,
  mode: import.meta.env.MODE,
}

// API 配置
export const apiConfig = {
  // 基础配置
  baseUrl: import.meta.env.VITE_API_BASE_URL || 'https://api.dfhub.cn/index.php/api/',
  fallbackUrl: import.meta.env.VITE_API_FALLBACK_URL || 'https://api.dfhub.cn/index.php/api/',
  timeout: Number(import.meta.env.VITE_API_TIMEOUT) || 15000,
  retryCount: Number(import.meta.env.VITE_API_RETRY_COUNT) || 3,
  retryDelay: Number(import.meta.env.VITE_API_RETRY_DELAY) || 1000,
  maxRetryDelay: Number(import.meta.env.VITE_API_MAX_RETRY_DELAY) || 10000,
  retryMultiplier: Number(import.meta.env.VITE_API_RETRY_MULTIPLIER) || 2,

  // 缓存配置
  enableCache: import.meta.env.VITE_ENABLE_CACHE === 'true',
  cacheExpireTime: Number(import.meta.env.VITE_CACHE_EXPIRE_TIME) || 3600000,
  cachePrefix: import.meta.env.VITE_CACHE_PREFIX || 'api_cache_',
}

// 调试配置
export const debugConfig = {
  debug: import.meta.env.VITE_DEBUG === 'true',
  logLevel: import.meta.env.VITE_LOG_LEVEL || 'info',
  showApiLogs: import.meta.env.VITE_SHOW_API_LOGS === 'true',
}

// Mock 配置
export const mockConfig = {
  useMock: import.meta.env.VITE_USE_MOCK === 'true',
  mockDelay: Number(import.meta.env.VITE_MOCK_DELAY) || 500,
}

// CDN 配置
export const cdnConfig = {
  imageUrl: import.meta.env.VITE_IMAGE_CDN_URL || '',
  staticUrl: import.meta.env.VITE_STATIC_CDN_URL || '',
}

// 客户端配置
export const clientConfig = {
  type: import.meta.env.VITE_CLIENT_TYPE || 'web',
  version: import.meta.env.VITE_CLIENT_VERSION || '1.0.0',
}

// 分析工具配置
export const analyticsConfig = {
  id: import.meta.env.VITE_ANALYTICS_ID || '',
  enabled: import.meta.env.VITE_ENABLE_ANALYTICS === 'true',
}

// 错误监控配置
export const errorConfig = {
  enabled: import.meta.env.VITE_ENABLE_ERROR_MONITORING === 'true',
  reportUrl: import.meta.env.VITE_ERROR_REPORT_URL || '',
}

// 性能监控配置
export const performanceConfig = {
  enabled: import.meta.env.VITE_ENABLE_PERFORMANCE_MONITORING === 'true',
}

// 开发服务器配置
export const devServerConfig = {
  host: import.meta.env.VITE_DEV_SERVER_HOST || 'localhost',
  port: Number(import.meta.env.VITE_DEV_SERVER_PORT) || 5173,
  https: import.meta.env.VITE_DEV_SERVER_HTTPS === 'true',
}

// 构建配置
export const buildConfig = {
  outputDir: import.meta.env.VITE_BUILD_OUTPUT_DIR || 'dist',
  compress: import.meta.env.VITE_BUILD_COMPRESS === 'true',
  sourcemap: import.meta.env.VITE_BUILD_SOURCEMAP === 'true',
}

// 安全配置
export const securityConfig = {
  enableCSP: import.meta.env.VITE_ENABLE_CSP === 'true',
  httpsOnly: import.meta.env.VITE_ENABLE_HTTPS_ONLY === 'true',
}

// 导出所有配置
export const config = {
  app: appConfig,
  api: apiConfig,
  debug: debugConfig,
  mock: mockConfig,
  cdn: cdnConfig,
  client: clientConfig,
  analytics: analyticsConfig,
  error: errorConfig,
  performance: performanceConfig,
  devServer: devServerConfig,
  build: buildConfig,
  security: securityConfig,
}

// 默认导出
export default config

// 类型定义
export type AppConfig = typeof appConfig
export type ApiConfig = typeof apiConfig
export type DebugConfig = typeof debugConfig
export type MockConfig = typeof mockConfig
export type CdnConfig = typeof cdnConfig
export type ClientConfig = typeof clientConfig
export type AnalyticsConfig = typeof analyticsConfig
export type ErrorConfig = typeof errorConfig
export type PerformanceConfig = typeof performanceConfig
export type DevServerConfig = typeof devServerConfig
export type BuildConfig = typeof buildConfig
export type SecurityConfig = typeof securityConfig
export type Config = typeof config
